package com.tss.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.tss.mapper.QuestionnaireMapper;
import com.tss.pojo.Questionnaire;
import com.tss.pojo.QuestionnaireExample;
import com.tss.pojo.QuestionnaireExample.Criteria;
import com.tss.pojo.Result;
import com.tss.service.QuestionnaireService;
import com.tss.utils.BeanUtils;
import com.tss.vo.Dictionary;

@Service
public class QuestionnaireServiceImpl implements QuestionnaireService{

	@Autowired
	private QuestionnaireMapper questionnaireMapper;
	
	@Override
	public Result cresteQuestionnaire(Questionnaire questionnaire) {
		Result result = new Result();
		if(questionnaire==null||questionnaire.getTitle()==null){
			result.setErrorMessage("参数错误！");
			return result;
		}
		if(findQuestionnaire(questionnaire)!=null){
			result.setErrorMessage("问卷标题已经存在！");
			return result;
		}
		questionnaire.setStatus(Dictionary.QUESTIONNAIRE_STATUS_UNISSUED);
		questionnaire.setValidate(true);
		questionnaire.setType(Dictionary.QUESTIONNAIRE_TYPE_NULL);
		questionnaireMapper.insert(questionnaire);
		result.setSuccessMessage("新增问卷成功！");
		return result;
	}

	@Override
	public Result deleteQuestionnaire(Long id) {
		Result result = new Result();
		Questionnaire questionnaire = questionnaireMapper.selectByPrimaryKey(id);
		if(questionnaire==null||questionnaire.getValidate()==false){
			result.setErrorMessage("问卷不存在！");
			return result;
		}
		questionnaire.setValidate(false);
		questionnaireMapper.updateByPrimaryKey(questionnaire);
		result.setSuccessMessage("删除问卷成功！");
		return result;
	}

	@Override
	public Result updateQuesionnaire(Questionnaire questionnaire) {
		Result result = new Result();
		if(questionnaire==null||questionnaire.getId()==null){
			result.setErrorMessage("参数错误！");
			return result;
		}
		Questionnaire q = questionnaireMapper.selectByPrimaryKey(questionnaire.getId());
		if(q==null||q.getValidate()==false){
			result.setErrorMessage("问卷不存在！");
			return result;
		}
		if(questionnaire.getTitle()!=null&&!questionnaire.getTitle().equals(q.getTitle())){
			Questionnaire qu = new Questionnaire();
			qu.setTitle(questionnaire.getTitle());
			if(findQuestionnaire(qu)!=null){
				result.setErrorMessage("问卷标题已经存在！");
				return result;
			}
		}
		q=BeanUtils.updateBean(q, questionnaire);
		questionnaireMapper.updateByPrimaryKey(q);
		result.setSuccessMessage("修改问卷成功！");
		return result;
	}

	@Override
	public Questionnaire findQuestionnaire(Questionnaire questionnaire) {
		if(questionnaire==null){
			return null;
		}
		if(questionnaire.getId()!=null){
			Questionnaire q = questionnaireMapper.selectByPrimaryKey(questionnaire.getId());
			if(q==null||q.getValidate()==false){
				return null;
			}
			return q;
		}
		QuestionnaireExample example = new QuestionnaireExample();
		Criteria criteria = example.createCriteria();
		criteria.andValidateEqualTo(true);
		if(questionnaire.getTitle()!=null){
			criteria.andTitleEqualTo(questionnaire.getTitle());
		}
		List<Questionnaire> list = questionnaireMapper.selectByExample(example);
		if(list.isEmpty()){
			return null;
		}
		return list.get(0);
	}

	@Override
	public List<Questionnaire> listQuestionnaire(Questionnaire questionnaire) {
		
		QuestionnaireExample example = new QuestionnaireExample();
		Criteria criteria = example.createCriteria();
		criteria.andValidateEqualTo(true);
		if(questionnaire==null){
			return questionnaireMapper.selectByExample(example);
		}
		if(questionnaire.getStatus()!=null){
			criteria.andStatusEqualTo(questionnaire.getStatus());
		}
		if(questionnaire.getCourseId()!=null){
			criteria.andCourseIdEqualTo(questionnaire.getCourseId());
		}
		return questionnaireMapper.selectByExample(example);
	}



}
